This invention relates generally to volume rendering, and more particularly, to a rendering pipeline wherein the order of processing in the pipeline stages can be user selectable.
Introduction to Volume Rendering
Volume rendering is often used in computer graphics applications where three-dimensional data need to be visualized. The volume data can be scans of physical or medical objects, or atmospheric, geophysical, or other scientific models where visualization of the data facilitates an understanding of the underlying real-world structures represented by the data.
With volume rendering, the internal structure, as well as the external surface features of physical objects and models are visualized. Voxels are usually the fundamental data items used in volume rendering. A voxel is a data item that represents a particular three-dimensional portion of the object or model. The coordinates (x, y, z) of each voxel map the voxels to positions within the represented object or model.
A voxel represents some particular intensity value of the object or model. For a given prior art volume, intensity values can be a specific one of a number of different parameters, such as, density, tissue type, elasticity, or velocity. During rendering, the voxel values are converted to color and opacity (RGBxcex1) values, according to the intensity values, which can be projected onto a two-dimensional image plane for viewing.
One frequently used technique during rendering is ray-casting. A set of imaginary rays are cast through the array of voxels. The rays originate from a viewer""s eye or from an image plane. The voxel values are re-sampled to points along the rays, and various techniques are known to convert the sampled values to pixel values. Alternatively, voxel values may be converted directly to RGBxcex1 voxels, which are then re-sampled along rays and accumulated to pixel values. In either case, processing of the volume data may proceed back-to-front, or front-to-back.
Rendering Pipeline
Volume rendering can be done by software or hardware. In one hardware implementation, the hardware is arranged as a multi-stage pipeline, see U.S. patent application Ser. No. 09/190,643 xe2x80x9cFast Storage and Retrieval of Intermediate Values in a Real-Time Volume Rendering System,xe2x80x9d filed by Kappler et al. on Nov. 12, 1998.
FIG. 1 illustrates a pipeline 100 wherein voxel values are stored in a voxel memory 101. The voxel values are first read into a voxel buffer 110 of the pipeline as slices. The z-components of the gradients are estimated in stage 115 by taking central differences between voxels of different slices. Then, both the voxel values and the z-gradients are passed to an interpolation stage 120 that calculates these values at sample points along rays. Next, the x- and y-components of the gradients are calculated from the interpolated sample values in stage 130. These, along with the sample values and the interpolated z-gradients are then passed to a classification stage 140, and then a shading stage 145, where an illumination process is applied to produce the RGBxcex1 values representing the illuminated samples. Finally, the illuminated samples are combined along rays in an compositing stage 150 to produce pixel values for the base plane stored in a pixel memory 109.
That pipeline structure suffers because the order of processing data is fixed by the arrangement of the various stages. Also, voxel values are interpolated so that only interpolated samples can be classified. It is not possible to concurrently render multiple volumes acquired from different scanning modalities. In addition, the format of the voxel data is fixed. Gradient fields are obtained from the fixed format voxel data. It is desired to improve on this prior art pipeline.
The invention provides a volume rendering pipeline including a plurality of processing stages. The stages can include a gradient estimation stage, an interpolation stage, a classification stage, an illumination stage, and a compositing stage. The stages are connected to each other by multiplexers.
A first multiplexer connects an output of a particular stage to an input of another stage, and a second multiplexer connects an input of a particular stage to an output of another stage. The multiplexers selectively connect the stages of the pipeline in a predetermined order to configure the rendering pipeline for processing a volume data set.
In one aspect of the invention, voxels of the volume data set are interpolated before classified, and in another aspect, the voxel are interpolated before they are classified.